package cn.ecnu.service.resume;

import cn.ecnu.pojo.resume.*;

import java.util.List;

public interface ResumeService {

    /**
     * 添加（或者更新）简历的基本信息
     * @param resumeBasic 简历-基本信息
     */
    void updateOrInsertResumeBasic(ResumeBasic resumeBasic);

    /**
     * 通过userId查询用户的基本信息
     * @param userId 用户id
     * @return 简历的基本信息
     */
    ResumeBasic getResumeBasicByUserId(Integer userId);

    /**
     * 更新简历的教育经历
     * @param resumeEdu 简历-教育经历
     * @return 教育经历是否更新成功
     */
    boolean updateResumeEdu(ResumeEdu resumeEdu);

    /**
     * 添加一段新的教育经历
     * @param resumeEdu 简历-教育经历
     * @return 教育经历是否添加成功
     */
    boolean insertResumeEdu(ResumeEdu resumeEdu);

    /**
     * 通过userId查找用户的教育经历，结果按照时间排序
     * @param userId 用户id
     * @return 简历的教育经历
     */
    List<ResumeEdu> getResumeEduByUserId(Integer userId);

    /**
     * 更新简历的在校经历
     * @param resumeExtra 简历-在校经历
     * @return 在校经历是否更新成功
     */
    boolean updateResumeExtra(ResumeExtra resumeExtra);

    /**
     * 添加一段新的在校经历
     * @param resumeExtra 简历-在校经历
     * @return 在校经历是否添加成功
     */
    boolean insertResumeExtra(ResumeExtra resumeExtra);

    /**
     * 通过userId查找用户的在校经历
     * @param userId 用户id
     * @return 简历的在校经历
     */
    List<ResumeExtra> getResumeExtraByUserId(Integer userId);

    /**
     * 更新简历的工作经历
     * @param resumeJob 简历-工作经历
     * @return 工作经历是否更新成功
     */
    boolean updateResumeJob(ResumeJob resumeJob);

    /**
     * 添加一段新的工作经历
     * @param resumeJob 简历-工作经历
     * @return 工作经历是否添加成功
     */
    boolean insertResumeJob(ResumeJob resumeJob);

    /**
     * 通过userId查找用户的工作经历，结果按照时间排序
     * @param userId 用户id
     * @return 简历的工作经历
     */
    List<ResumeJob> getResumeJobByUserId(Integer userId);

    /**
     * 更新简历的职业技能
     * @param resumeSkill 简历-职业技能
     * @return 职业技能是否更新成功
     */
    boolean updateResumeSkill(ResumeSkill resumeSkill);

    /**
     * 添加一个新的职业技能
     * @param resumeSkill 简历-职业技能
     * @return 职业技能是否添加成功
     */
    boolean insertResumeSkill(ResumeSkill resumeSkill);

    /**
     * 通过userId查找用户的职业技能
     * @param userId 用户id
     * @return 简历的职业技能
     */
    List<ResumeSkill> getResumeSkillByUserId(Integer userId);

    /**
     * 更新简历的期望岗位
     * @param resumeExp 简历-期望岗位
     * @return 期望岗位是否更新成功
     */
    boolean updateResumeExp(ResumeExp resumeExp);

    /**
     * 添加一个新的期望岗位
     * @param resumeExp 简历-期望岗位
     * @return 期望岗位是否添加成功
     */
    boolean insertResumeExp(ResumeExp resumeExp);

    /**
     * 通过userId查找用户的求职期望
     * @param userId 用户id
     * @return 简历的期望岗位
     */
    List<ResumeExp> getResumeExpByUserId(Integer userId);
}
